import { authAPI } from '@/api/index';

// 用户状态管理
export const useUserStore = () => {
  // 获取用户信息
  const getUserInfo = () => {
    return uni.getStorageSync('userInfo') || null;
  };

  // 设置用户信息
  const setUserInfo = (userInfo) => {
    uni.setStorageSync('userInfo', userInfo);
  };

  // 清除用户信息
  const clearUserInfo = () => {
    uni.removeStorageSync('userInfo');
  };

  // 检查登录状态
  const isLoggedIn = () => {
    const token = uni.getStorageSync('token');
    const userInfo = getUserInfo();
    return !!(token && userInfo);
  };

  // 检查是否为游客模式
  const isGuestMode = () => {
    const guestUser = uni.getStorageSync('guestUser');
    return !!guestUser;
  };

  // 设置游客模式
  const setGuestMode = (isGuest) => {
    if (isGuest) {
      // 设置游客模式时，清除正式登录信息
      uni.removeStorageSync('token');
      clearUserInfo();
    } else {
      // 退出游客模式时，清除游客信息
      uni.removeStorageSync('guestUser');
    }
  };

  // 获取游客信息
  const getGuestInfo = () => {
    return uni.getStorageSync('guestUser') || null;
  };

  // 退出游客模式
  const exitGuestMode = () => {
    uni.removeStorageSync('guestUser');
    uni.showToast({
      title: '已退出游客模式',
      icon: 'success'
    });
  };

  // 用户登录
  const login = async (username, password, rememberMe = false) => {
    try {
      const response = await authAPI.login(username, password, rememberMe);
      
      if (response.token) {
        // 保存token和用户信息
        uni.setStorageSync('token', response.token);
        
        // 构建用户信息对象
        const userInfo = {
          userId: response.userId,
          username: response.username,
          email: response.email,
          lastLogin: response.last
        };
        
        setUserInfo(userInfo);
        
        // 登录成功后清除游客模式
        exitGuestMode();
        
        uni.showToast({
          title: '登录成功',
          icon: 'success'
        });
        
        return response;
      } else {
        throw new Error(response.message || '登录失败');
      }
    } catch (error) {
      uni.showToast({
        title: error.message || '登录失败',
        icon: 'error'
      });
      throw error;
    }
  };

  // 用户退出
  const logout = () => {
    try {
      // 清除本地存储
      uni.removeStorageSync('token');
      clearUserInfo();
      
      // 同时清除游客模式
      exitGuestMode();
      
      uni.showToast({
        title: '已退出登录',
        icon: 'success'
      });
      
      // 跳转到登录页
      uni.reLaunch({
        url: '/pages/login/index'
      });
    } catch (error) {
      console.error('退出登录失败:', error);
    }
  };

  // 更新用户信息
  const updateUserInfo = async () => {
    try {
      const response = await authAPI.getUserInfo();
      if (response.success) {
        setUserInfo(response.data);
        return response.data;
      }
    } catch (error) {
      console.error('获取用户信息失败:', error);
    }
  };

  return {
    getUserInfo,
    setUserInfo,
    clearUserInfo,
    isLoggedIn,
    isGuestMode,
    setGuestMode,
    getGuestInfo,
    exitGuestMode,
    login,
    logout,
    updateUserInfo
  };
};